Soru & Cevap

nrf24l01 ile l298n motor sürücü

22.08.2019 - 02:52

uzaktan kumandalı gemi yapıyorum iletişimde bir sorun gözükmüyor. kumandadan aldığım degerleri alıcımda seri ekranda okuyorum. fakat motor sürücümün enable pinlerine bu degerleri yazdıramıyorum. analogwrite komutuyla yazdırmam gerekiyor fakat yazdıramıyorum. digital write yazdığımda ise motorlar son gaz ileri yada son gaz geri dönüyor. hız kotrollü olarak programlamak istiyorum lütfen yardımcı olun. şimdiden teşekkür ederim. 

///// kumandanın potansiyometrelerinden 0 ile 3550 arasında degerler alıyorum ona göre yazdım soly ve sagx yazdığım şeyler soldaki potansiyometrenin y ekseni (soly) sagx de aynı şekilde sağdaki pot x ekseni degeri  

#include<nRF24L01.h>
#include<RF24.h>
# include<SPI.h>
# include<Servo.h>

// ALICI KODLARI ( GEMİ)

#define CE_PIN 7
#define CSN_PIN 8

const int enA= 9;
const int enB= 10;
const int in1= 4;
const int in2= 5;
const int in3= 6;
const int in4= 2;

int motorspeedA; 
int motorspeedB;
int servodeger;
Servo servo;

const  uint64_t pipe = 0xE8E8F0F0E1LL ;

RF24 radio (7, 8);

int data[ 5 ];  // gelen veriler

void setup() {//////////////////////////////////////////////////////////////////////////

Serial.begin(9600);

  radio.begin ();
  radio.openReadingPipe ( 1 , pipe );
  radio.startListening () ;;
    
  servo.attach(3);

  pinMode ( enA , OUTPUT);
  pinMode ( enB , OUTPUT);
  
  pinMode (in1, OUTPUT);
  pinMode (in2, OUTPUT);
  pinMode (in3, OUTPUT);
  pinMode (in4, OUTPUT);
 
}
//////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
if (radio.available()){
radio.read( data, sizeof(data) ); 
    
hareket(data[0],data[1],data[2],data[3]);

 }
}
void hareket(int soly, int solx, int sagy, int sagx ) {
///////////////////////////////////////////////////////////////////////////////////////  
if( soly > 2100){
  
motorspeedA = map(soly, 2100, 3550, 0, 255);  // pot degeri arttıkça hızlanacak
motorspeedB = map(soly, 2100, 3550, 0, 255);

servodeger = map(sagx, 0 ,3650 ,0 ,180);
servo.write(servodeger);

void speed(cost int enA, cost int enB, soly) {
  
  for(int i=0; i< soly; i++) { 
    analogWrite(enA, i);
    analogWrite(enB, i);
  }
}

digitalWrite(in1, LOW);                         /// İLERİ YÖN
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);

}
////////////////////////////////////////////////////////////////////////////////////////
else if( soly < 1950){ 
  
motorspeedA= map(soly ,1950, 0, 0, 100); // pot 0'a gittikçe geri yönde hızlanacak
motorspeedB= map(soly ,1950, 0, 0, 100);

servodeger = map(sagx, 0 ,3650 ,0 ,180);
servo.write(servodeger);  
                                                               //// GERİ YÖN
void speed(cost int enA, cost int enB, soly) {
  
  for(int i=0; i< soly; i++) { 
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(10);
  }
}

digitalWrite(in1, HIGH); 
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);

 

}
/////////////////////////////////////////////////////////////////////////////////////


Serial.print(soly);          ///pot degerleri seri ekran
Serial.print("   ");

Serial.print(solx);
Serial.print("   ");

Serial.print(sagy);
Serial.print("   ");

Serial.print(sagx);
Serial.print("   ");

Serial.print("Servo:");
Serial.print(servodeger);
Serial.print("   Motorlar: ");

Serial.print(motorspeedA);
Serial.print(" - ");

Serial.print(motorspeedB);
Serial.println(" ");

}

99 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user tunaftlmk
tunaftlmk
22.09.2019 - 03:25

yani analog değerinizi verici kısmında 0'dan 1024'e kadar sınırlıyoruz 10 bit olduğu için sen o sınırladığın rakamı gönder vericiden

örneğin değerlendirmeyi vericide yaptın potansiyometren tam ortada yani bizim analog değerimiz 512 bunu gönder ve alıcıda direk bunu kullanırsın.

Profile picture for user tunaftlmk
tunaftlmk
05.09.2019 - 09:31

kodunuzda bir sıkıntı gözükmüyor analog olarak aldığınız değeri verici kısmında değerlendirip alıcı kısmına gönderirseniz daha iyi olacaktır ben bir projemde öyle kullanmıştım başarılı bir şekilde proje çalışmıştı.

Samet Özdemir
08.09.2019 - 11:23
tam anlayamadım nasıl yani